package com.cnebula.openapi.auth.service;

import com.cnebula.openapi.auth.vo.AccessToken;
import com.cnebula.openapi.auth.vo.AuthCode;
import com.cnebula.openapi.auth.vo.User;

import io.vertx.core.Future;

/**
 * 授权码 服务接口
 *
 */
@Deprecated
public interface AuthCodeService {
	
	
	/**
	 * 创建授权码
	 * 
	 * 授权码默认过期时间为1分钟
	 * 
	 * @param clientKey
	 * @param tenantId
	 * @param userId
	 * @param userName
	 * @param accessToken
	 * @param resultHandler
	 */
	public Future<AuthCode> create(String clientKey, String tenantId, User user, AccessToken accessToken);
	
	/**
	 * 取出授权码，授权码取出后该授权码的相关记录将从库中移除
	 * 
	 * @param code
	 * @return
	 */
	
	/**
	 * 取出授权码，授权码取出后该授权码的相关记录将从库中移除
	 * 
	 * @param code
	 * @return AuthCode 授权码信息实体
	 *         AuthCodeUnavailableException 授权码不可用（已被取走或过期）
	 */
	public Future<AuthCode> take(String code);
	
}
